var message; // 定义了变量但没有赋值
// console.log(message);
var message1 = 100
message1 = 'hello' // 可以修改值得类型，但不推荐

// 1.var的声明作用域
// 在函数中用var声明变量会成为函数的局部变量
// 在函数中不用关键字声明的变量会变为全局变量
function sayHello() {
  var cuifan = 'cuifan'
  cuifan1 = 'cuifan1' // 不推荐这样做，局部作用域定义全局变量很难维护，也容易造成困惑，严格模式下会报错
}
sayHello()

// console.log(cuifan1);
// console.log(cuifan); // 报错

// 定义多个变量
var num1 = 1,
  num2 = 2,
  num3 = 3

// 2.var声明提升
// 把所有变量声明都拉到函数作用域的顶部。反复多次
// 使用 var 声明同一个变量会被覆盖
function sayGoodBye() {
  console.log(message2);
  var message2 = 'byebye'
}

// 可以把代码看成
// function sayGoodBye() {
//   var message2;
//   console.log(message2);
//   message2 = 'byebye'
// }
sayGoodBye()